﻿//using Microsoft.EntityFrameworkCore;

//namespace Dx.DDD.Repositories
//{
//    public class DbContextFactory
//    {
//        private readonly Dictionary<string,DbContext> _dbContexts = new();
//        private readonly IServiceProvider _serviceProvider;
//        public DbContextFactory
//            (
//                IServiceProvider service
//            ) 
//        {
//            _serviceProvider = service;
//        }
//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="name"></param>
//        /// <returns></returns>
//        public DbContext GetDbContext(string? name) 
//        {
//            var scope = _serviceProvider.CreateScope();
//            var pro = scope.ServiceProvider;
//            var dbContexts = pro.GetServices(typeof(DbContext));
//            foreach (DbContext context in dbContexts)

//            {
//                var key = context.GetType().Name;
//                _dbContexts[key] = context;
//            }
//            if (string.IsNullOrWhiteSpace(name)|| !_dbContexts.TryGetValue(name, out DbContext? db)) return _dbContexts.Values.First();
//            return db;
//        }
//    }
//}
